/** Package GUI version 1.0. In questo package troverete tutte le costante e i nuovi tipi definiti per il Package GUI */

create or replace package package_gui_statics as

/* Lista degli eventi JS supportati (dalla maggior parte dei browser)

onBlur
onChange
onClick
ondblclick
ondrop
onerror
onfocus
oninput
onkeydown
onkwypress
onkeyup
onkwydown
onmessage
onmousedown
onmousemove
onmouseout
onmouseleave
onmouseup
onscroll
onselect
onsubmit

Esistono altri eventi ma non vi consiglio di usarli dato che sono poco supportati e sono piu' che sicuro che questi vi bastano per fare danni e 
far si che la gui smetta di funzionare :)

*/

/** Ruolo operatore */
ROLE_OP NUMBER := 1;
ROLE_MAG NUMBER := 2;
ROLE_SYS NUMBER := 4;

/** Carattere costante che divide le coppie della sessionVar */
sessionCoupleSeparator VARCHAR2(512) := '$';

/** Carattere costante che divide la chiave dal valore nelle coppie della sessionVar */
sessionKeyValueSeparator VARCHAR2(512) := '@';

/** Costante che rappresenta il server dove risieodono i file JS, CSS e co */
serverHTTP VARCHAR2(512) := 'http://www.designfuture.it/bdl/';

/** Array associativo di tipo Varchar2=>Varchar2 */
TYPE arrayVarcharVarchar IS TABLE OF VARCHAR2(1024) INDEX BY VARCHAR2(1024);

/** Array di tipo int=>Varchar2 */
TYPE arrayIntVarchar IS TABLE OF VARCHAR2(1024) INDEX BY BINARY_INTEGER;

/** Tipo ruleDefinitionType utilizzato per creare regole di validazione di un input */
TYPE ruleDefinitionType IS RECORD ( 
   is_required       BOOLEAN DEFAULT TRUE,
   minlength        BINARY_INTEGER DEFAULT NULL,
   maxlength        BINARY_INTEGER DEFAULT NULL,
   rangelength      VARCHAR2(20) DEFAULT NULL,
   min_val           BINARY_INTEGER DEFAULT NULL,
   max_val           BINARY_INTEGER DEFAULT NULL,
   range_val         VARCHAR2(20) DEFAULT NULL,
   email            BOOLEAN DEFAULT FALSE,
   url              BOOLEAN DEFAULT FALSE,
   date_rule         BOOLEAN DEFAULT FALSE,
   only_number       BOOLEAN DEFAULT FALSE,
   only_digit        BOOLEAN DEFAULT FALSE
);

/** Tipo ruleMessageType utilizzato per associare messaggi di errore personalizzati alle relative validazioni */
TYPE ruleMessageType IS RECORD ( 
   msg_is_required      VARCHAR2(512) DEFAULT NULL,
   msg_minlength        VARCHAR2(512) DEFAULT NULL,
   msg_maxlength        VARCHAR2(512) DEFAULT NULL,
   msg_rangelength      VARCHAR2(512) DEFAULT NULL,
   msg_min_val          VARCHAR2(512) DEFAULT NULL,
   msg_max_val          VARCHAR2(512) DEFAULT NULL,
   msg_range_val        VARCHAR2(512) DEFAULT NULL,
   msg_email            VARCHAR2(512) DEFAULT NULL,
   msg_url              VARCHAR2(512) DEFAULT NULL,
   msg_date_rule        VARCHAR2(512) DEFAULT NULL,
   msg_only_number      VARCHAR2(512) DEFAULT NULL,
   msg_only_digit       VARCHAR2(512) DEFAULT NULL
);

/* Array di regole di validazione da applicare agli input */
TYPE arrayRulesType IS TABLE OF ruleDefinitionType INDEX BY VARCHAR(512);

/* Array di messaggi relativi alle regole di validazione da applicare agli input */
TYPE arrayRulesMessageType IS TABLE OF ruleMessageType INDEX BY VARCHAR(512);

end package_gui_statics;
